维度表属性与虚拟属性
一、维度表属性和虚拟属性的意义?
对于已经上报的事件属性和用户属性,可以通过上传维度表或设置虚拟属性将原先上传的数据映射为另一种展示值或计算值。在筛选条件,分组中可以使用维度表属性或虚拟属性。如此操作,可以使初始埋点时的属性值不与展示值相同,并可在后期可对于数据进行加工,提高灵活性。
二、维度表属性和虚拟属性的使用场景
如在埋点记录渠道数据时,计A01代表小米,A02代表百度。使用channel@new作为渠道的维度表属性。那么在筛选模型中,可以找到渠道映射表。展示时,可以以“小米”、“百度”作为渠道名展示
如在埋点记录付费金额时,以分作为单位。而在正常使用时以元为单位。那么。可以为付费金额属性创建对应的虚拟属性(值为原始属性的1/100)
三、如何创建维度表属性
3.1 模块布局与使用权限
仅元数据管理中的事件属性和用户属性有此功能
管理员及以上用户可以操作维度表或创建虚拟属性规则
分析师及以上可以下载维度表或查看虚拟字段创建规则
3.2 概念梳理
系统属性:事件表、用户表中固有的系统字段,如事件时间、账户ID,必定以“#”号开头
预置属性:在数据接入过程中,由SDK自行生成的字段,如IP、国家等,必定以“#”号开头
自定义属性:根据业务需求定制上传的属性,如付费金额等,其不能使用“#”
维度表属性:原始属性通过上传维度表而新生成的属性,这类属性可能因覆盖而消失
虚拟属性:通过规则将原始属性转化而成的新属性
原始属性:预置属性与自定义属性的合称
生成属性:维度表属性与虚拟属性的合称
父、子属性:原始属性通过维度表生成维度表属性后,该原始属性为父属性,维度表属性为子属性
数据类型:数据类型有文本、数值、时间、布尔四种。仅文本、数值型的原始属性可以上传维度表属性
3.3 属性管理页面中的展示与交互
预置属性、自定义属性、维度表属性、虚拟属性都将展示在表格中
其中维度表属性将会作为子属性被折叠在父属性下
当某个原始属性当前没有子属性时,其前部没有展开选项。
生成属性的属性名右上角会有标志,其显示名在模型筛选中也会有标志
3.4 上传维度表
1.请在需要添加维度表的原始属性字段上选择“上传”维度表属性
2.维度表文件的具体规则
- 维度表上传时,请确保首行首列的内容与原始属性字段名保持一致。
- 首行内容为需要被映射成的维度表属性字段名称,内容必须为英文、数字或“_”,该信息将组成维度表属性的属性名
- 首列为需要添加维度表的原始字段,需保证值唯一。如遇到重复,则以首条为准,后续重复信息将被抛弃
3.以UTF-8编码格式保存csv文件
* 保存方法(1)
Excel中生成,并保存为UTF-8编码格式的csv文件
* 保存方法(2)
生成的csv文件通过记事本打开,并另存为UTF-8编码的csv文件
4.将维度表文件添加到上传位置
5.填写显示名和字段类型
根据需求填写映射后的维度表字段显示名和类型
6.系统解析导入和状态
7.完成后,可在列表中找到新加入的维度表属性
8.在模型中可以使用该维度表属性进行分析
3.5 下载、删除维度表
下载时将自动按格式下载.csv
文件(注:分析师权限也可以下载维度表)
删除维度表时会进行提示
删除后,其对应所有维度表属性都将被删除
3.6 使用TA OpenApi创建维度表并定时更新
说明:该接口用于直接通过接口创建维度表,免登陆但需要密码鉴权。
Method | URL | 注 |
---|---|---|
POST | https://host/v1/ta/meta/prop/virtual/dict/create | 其中host为ta集群web访问的ip或域名 |
3.6.1 请求参数
Parameter | Description | Data Type |
---|---|---|
file | 文件 | file |
projectId | 项目ID | integer |
createParam | 创建维度列信息描述 | string |
loginName | 登录名 | string |
password | 密码 | string |
3.6.2 维度表创建参数createParam
的配置
3.6.2.1 实际字段创建维度属性
此处的实际字段为channel
,与维度表中的channel_id
进行关联连接,添加维度表属性channel_name
1.维表示例(第一列为关联字段)
channel_id | channel_name |
---|---|
1 | 龙腾1区 |
2 | 龙腾2区 |
3 | 龙腾3区 |
2.createParam示例(给事件表的channel
字段创建上述维度表)
{
"commonHeader": {
"projectId": 0
},
"mainColumn": {
"property": {
"columnName": "channel",
"tableType": 0
}
},
"columns": [{
"property": {
"columnName": "channel_id",
"selectType": "number"
}
}, {
"property": {
"columnName": "channel_name",
"columnDesc": "渠道类型",
"selectType": "string"
}
}]
}
3.createParam字段解释
commonHeader节点(通用描述信息节点)
属性名称 | 属性描述 |
---|---|
projectId | 项目ID |
mainColumn节点(创建维度表的主字段描述节点)
属性名称 | 属性描述 |
---|---|
property | 主属性 |
columnName | 主属性字段名称 |
tableType | 主属性所属表类型,0:事件属性;1:用户属性 |
columns节点(维度字段描述节点)
属性名称 | 属性描述 |
---|---|
property | 维度字段属性列表 |
columnName | 维度字段名称 |
columnDesc | 维度字段描述,即字段的显示名称(可选) |
selectType | 维度字段类型:number 数值,bool 布尔,string 字符串,datetime 日期类型 |
4.其他注意事项
维表中的channel_id
字段是实际字段channel
的关联字段,维度表的关联字段的字段名可以和实际字段不一致。
5.创建结果
创建成功后,可找到属性名为channel@channel_name
的维度表属性
3.6.2.2 虚拟字段创建维度属性
虚拟字段创建维表和实际字段创建维表类似,只有mainColumn
的property
中需要增加一个元素("subTableType": "vprop_sql"
)
虚拟字段创建维度属性createParam
示例
{
"commonHeader": {
"projectId": 0
},
"mainColumn": {
"property": {
"columnName": "#vp@channel",
"tableType": 0,
"subTableType": "vprop_sql"
}
},
"columns": [{
"property": {
"columnName": "channel_id",
"selectType": "number"
}
}, {
"property": {
"columnName": "channel_name",
"columnDesc": "渠道类型",
"selectType": "string"
}
}]
}
3.6.3 接口响应实体
属性名称 | 属性描述 |
---|---|
return_code | 请求响应码 0为成功,其他为失败 |
return_message | 响应失败信息 |
data | 详细报告实体 |
响应报告描述
属性名称 | 属性描述 |
---|---|
duplcatedMainKeyColumns | 关联主字段重复的列名称 |
duplcatedMainKeyLineNum | 关联主字段重复的行数(会自动丢弃) |
mainKeyErrorColumns | 关联主字段解析错误的列名称 |
mainKeyErrorLineNum | 关联主字段解析错误的行数(会自动丢弃) |
typeErrorColumns | 其他字段类型错误的列名称 |
typeErrorLineNum | 其他字段类型错误的行数(会置空) |
successLineNum | 成功的行数 |
totalLineNum | 总行数 |
{
"data": {
"duplcatedMainKeyColumns": [
"string"
],
"duplcatedMainKeyLineNum": 0,
"mainKeyErrorColumns": [
"string"
],
"mainKeyErrorLineNum": 0,
"successLineNum": 0,
"totalLineNum": 0,
"typeErrorColumns": [
"string"
],
"typeErrorLineNum": 0
},
"return_code": 0,
"return_message": "string"
}
3.6.4 示例
请求示例
curl --header 'Accept: application/json' --form '[email protected]' 'http://dev.test.ta.thinkingdata.cn/v1/ta/meta/prop/virtual/dict/create?projectId=0&createParam=%7b%22commonHeader%22%3a%7b%22projectId%22%3a0%7d%2c%22mainColumn%22%3a%7b%22property%22%3a%7b%22columnName%22%3a%22channel%22%2c%22tableType%22%3a0%7d%7d%2c%22columns%22%3a%5b%7b%22property%22%3a%7b%22columnName%22%3a%22channel_id%22%2c%22selectType%22%3a%22number%22%7d%7d%2c%7b%22property%22%3a%7b%22columnName%22%3a%22channel_name%22%2c%22columnDesc%22%3a%22%e6%b8%a0%e9%81%93%e7%b1%bb%e5%9e%8b%22%2c%22selectType%22%3a%22string%22%7d%7d%5d%7d&loginName=18001605765&password=wangli'
响应示例
{
"data": {
"duplcatedMainKeyColumns": [
"activity_type@type_test"
],
"duplcatedMainKeyLineNum": 2,
"mainKeyErrorColumns": [
"activity_type@type_test"
],
"mainKeyErrorLineNum": 3,
"successLineNum": 27,
"totalLineNum": 40,
"typeErrorColumns": [
"numwrong_test",
"boolwrong_test"
],
"typeErrorLineNum": 8
},
"return_code": 0,
"return_message": "success"
}
四、如何查看虚拟属性
4.1 虚拟属性的编辑与创建
4.1.1 从管理页查看虚拟属性信息
查看信息后也可以直接选择编辑该虚拟属性
4.1.2 创建虚拟属性流程
点击添加虚拟属性,进入创建页
步骤1:填写基本信息
属性名以“#vp”开头,不可编辑。填入属性名和显示名
步骤2:编辑虚拟属性的创建规则
进入虚拟属性的创建规则时,可以从菜单中快速拾取当前的可用属性。
当输入内容后,可点击“校验”检查语法。
如果校验成功,则依据SQL信息出现结果显示输入框
需要为其赋值,并查看计算结果
如果计算结果符合需求,可以点击“下一步”进入步骤3:完成
如果计算结果与预期有差距可以修改创建规则,重复上述步骤
4.2 创建虚拟属性的注意点
1.属性种类一致
创建虚拟属性时,只能选用同种类属性(事件属性或用户属性)进行创建,不允许跨种类混用,创建后的虚拟属性种类与原属性种类保持一致
2.虚拟属性的命名规则
维度表中默认将使用
a@b
的形式,a为原属性,b为维度表中字段。"a@"
不可更改虚拟属性将使用
#vp@b
的形式,b为自增的当前规则数值,"#vp@"
不可更改
3.删除虚拟属性
维度表属性只能通过覆盖维度表属性实现。
虚拟属性只能通过删除虚拟属性来实现。
删除权限为管理员及以上,可以覆盖别人上传的维度表或删除别人创建的规则
4.虚拟属性不会占用属性数
5.维度表属性可创建数量限制3000,规则属性可创建数量限制3000
4.3 筛选条件等分析模型中的展示
- 所有事件属性可以筛选的场景都可以添加生成事件属性,所有用户属性可以筛选的场景都可以添加生成用户属性。在下拉框中有标记
- 通过维度表生成的维度表属性在判断事件公有属性时遵从父属性
- 规则创建的虚拟属性再判断时间公有属性时必须全部创建属性都是公有属性时才算,有一项不满足即不算为公有属性。
- 用户列表、用户行为序列不开放虚拟用户属性